package _11_整理题目._Spring基础原理._反射;


/**
 * 1、创建对象的方式：有三种 new、反射、反序列化
 * 2、一个类的生命周期：加载、连接（验证、准备、解析）、初始化、  使用、卸载（前三步也可统称为类的加载）
 *      加载、连接、初始化 并不是完全顺序执行，有些部分是交叉执行的
 * 3、生命周期内各步骤的主要工作：
 *      加载：通过一个全限定类名 获取这个 类定义的二进制字节流(通常是.class文件)（可以从任意位置），
 *          将它转化为jvm运行时数据结构，最终生成一个代表这个类的 Class 对象。
 *          简单说就是将 类定义的二进制字节流 读入内存，创建对应的 java.lang.Class 对象实例。
 *          这个 .class 可以用任意方式获取：运行时动态获取(反射,动态代理)、网络中(网络请求io)、文件(.class,加密文件)、压缩包(jar,war)
 *          系统中所有这样的类（String、自定义的）又是 java.lang.Class 类的实例
 *      验证：主要是验证 被加载的类(类定义的二进制字节流) 是否 有正确的内部结构，以及恶意代码，
 *          作用除了检验类信息之外，是为保证 jvm 的安全性
 *      准备：为 类变量(不包括实例变量) 分配内存，设置初始值(初始 0 值，和 final 的初始值)
 *      解析：将 二进制数据 中的 符号引用 替换为 直接引用
 *      初始化：主要是对 类变量 初始化，通过 声明变量指定初始值 和 静态代码块 两种方式初始化
 * 4、类和类加载器：描述 从哪里获取，怎么加载 类信息
 *      被加载的类的唯一性：通过 类加载器 和 类的 全限定类名（包名+类名）唯一确定
 *      四种类加载器：启动类加载器，扩展类加载器，应用程序类加载器，自定义类加载器
 *
 */
public class _000_反射知识整理 {

}
